<?php
/**
 * @package PWE.controler
 * @author Gmax <gmaxfr78@gmail.com>
 */
class controler_admin extends controler{    
    private $_templates = array();
    
    function __construct() {
        parent::__construct();
        
        $templateConfigFile = $this->getThemePath().'/admin/templates.ini';
        if(file_exists($templateConfigFile)){
            /* attribution des valeurs de config */
            $conf = parse_ini_file($templateConfigFile,true);
            $this->_templates = $conf['templates'];
        }
    }
    
    /**
     * deconnexion de l'administrateur
     */
    public function deconnect(){
        session::delete('admin');
        session::deleteCookie("admin_id");
    }
    public function getOutput() {
        
        /* verification qu'un admin est connecté */
        if( !modele_user::isConnectedAdmin() || modele_user::getConnectedAdmin()->getLevel()>3 ){
            header('location: login.php');
            exit;
        }else{
            $this->admin = modele_user::getConnectedAdmin();
        }
        
        parent::getOutput();
        
        if(navigation::isDoAction()){
            $this->execute(navigation::getAdminRoot());
        }
        
        ob_start();
        
        include($this->_getHeaderPath());
        include($this->_getMainPath());
        include($this->_getFooterPath());
        
        $retour = $this->_process(ob_get_contents());
        ob_end_clean();
        
        bdd_sql::close();
        
        return $retour;
    }
    public function getContent(){
        include($this->_getTemplatePath());
    }
    /**
     * renvoi la liste des templates de page disponible pour le thème actif
     * @return array
     */
    public function getTemplateListe(){
        return $this->_templates;
    }
    /**
     * renvoi l'url complète vers le theme jquery ui actif
     * @return string
     */
    public function getUiThemePath(){
        return $this->getBaseURL().'css/themes/'.self::getThemeUi().'/jquery-ui.css';
    }
    
    /* generation codes input html */
    /**
     * renvoi le code html d'un champs d'insertion input
     * @param string $titre
     * @param string $name
     * @param mixed $value
     * @param string $modele
     * @param int $modele_id
     * @param array $options - default : $params = array('balise_titre'=>'h3''id_titre'=>'','id_input'=>'','class_titre'=>'','class_input'=>'','prefix'=>'','sufix'=>'','actions'=>array());
     * @return string
     */
    public function getInputHtml($titre,$name,$value='',$modele='',$modele_id=0,$options=array()){
        $params = array('balise_titre'=>'h3',
            'id_titre'=>'',
            'id_input'=>'',
            'class_titre'=>'',
            'class_input'=>'',
            'prefix'=>'',
            'sufix'=>'',
            'editor'=>'0',
            'actions'=>array()
        );
        foreach($options as $k=>$v){
            $params[$k] = $v;
        }
        $actions = '';
        foreach ($params['actions'] as $action=>$script){
            $actions .= $action.'="'.$script.'"';
        }
        
        $id_titre = "";
        if(isset($params['id_titre'])&&$params['id_titre']!=='') $id_titre = ' id="'.$params['id_titre'].'"';
        $id_input = "";
        if(isset($params['id_input'])&&$params['id_input']!=='') $id_input = ' id="'.$params['id_input'].'"';
        
        $html = '';
        if($titre!==''){
            $html .= '<'.$params['balise_titre'].$id_titre.'>'.$titre.'</'.$params['balise_titre'].'>'."\n\r";
        }
        $html .= '<p style="margin: 10px 0;">';
        $html .= $params['prefix'].'<input'.$id_input.' name="'.$name.'" type="text" value="'.$value.'" class="'.$params['class_input'].'" '.$actions.'/>'.$params['sufix'];
        $html .= '</p>'."\n\r";

        if(PWE::getNbrLanguesActives()>0 && $modele_id>0){
            $html .= '<p class="langue">';
            foreach(PWE::getLanguesActives() as $lang){
                $html .= '<span class="'.$lang.'" onclick="javascript:openTranslate(\''.$lang.'\',\''.$modele.'\',\''.$modele_id.'\',\''.$name.'\',\'input\',\''.$params['editor'].'\');">&nbsp;</span>';
            }
            $html .= '</p>'."\n\r";
        }
        
        return $html;
    }
    /**
     * renvoi le code html d'un champs d'insertion textarea
     * @param string $titre
     * @param string $name
     * @param mixed $value
     * @param string $modele
     * @param int $modele_id
     * @param array $options - default : $params = array('balise_titre'=>'h3''id_titre'=>'','id_input'=>'','class_titre'=>'','class_input'=>'','prefix'=>'','sufix'=>'','actions'=>array());
     * @return string
     */
    public function getTextareaHtml($titre,$name,$value='',$modele='',$modele_id=0,$options=array()){
        $params = array('balise_titre'=>'h3',
            'id_titre'=>'',
            'id_input'=>'',
            'class_titre'=>'',
            'class_input'=>'',
            'prefix'=>'',
            'sufix'=>'',
            'editor'=>'1',
            'actions'=>array()
        );
        foreach($options as $k=>$v){
            $params[$k] = $v;
        }
        $actions = '';
        foreach ($params['actions'] as $action=>$script){
            $actions .= $action.'="'.$script.'"';
        }
        
        $id_titre = "";
        if(isset($params['id_titre'])&&$params['id_titre']!=='') $id_titre = ' id="'.$params['id_titre'].'"';
        $id_input = "";
        if(isset($params['id_input'])&&$params['id_input']!=='') $id_input = ' id="'.$params['id_input'].'"';
        $html = '';
        if($titre!==''){
            $html .= '<'.$params['balise_titre'].$id_titre.'>'.$titre.'</'.$params['balise_titre'].'>'."\n\r";
        }
        $html .= '<p style="margin: 10px 0;">';
        $html .= $params['prefix'].'<textarea'.$id_input.' name="'.$name.'" type="text" class="'.$params['class_input'].'" '.$actions.'>'.$value.'</textarea>'.$params['sufix'];
        $html .= '</p>'."\n\r";
        
        if(count(PWE::getLanguesActives())>0 && $modele_id>0){
            $html .= '<p class="langue">';
            foreach(PWE::getLanguesActives() as $lang){
                $html .= '<span class="'.$lang.'" onclick="javascript:openTranslate(\''.$lang.'\',\''.$modele.'\','.$modele_id.',\''.$name.'\',\'textarea\',\''.$params['editor'].'\');">&nbsp;</span>';
            }
            $html .= '</p>'."\n\r";
        }
        
        return $html;
    }
    
    
    /* private */
    private function _getTemplatePath(){
        if(navigation::getAdminTemplate()!==''){
            $path = 'include/'.navigation::getAdminTemplate().'.php';
            if(file_exists(PWE::getThemePath().'/admin/'.$path)){
                $path = PWE::getThemePath().'/admin/'.$path;
            }elseif(!file_exists($path)){
                $path = 'include/accueil.php';
                if(file_exists(PWE::getThemePath().'/admin/'.$path)){
                    $path = PWE::getThemePath().'/admin/'.$path;
                }
            }
        }else{
            $path = 'include/accueil.php';
            if(file_exists(PWE::getThemePath().'/admin/'.$path)){
                $path = PWE::getThemePath().'/admin/'.$path;
            }
        }
        
        return $path;
    }
    private function _getHeaderPath(){
        $path = 'include/interface/header.php';
        if(file_exists(PWE::getThemePath().'/admin/'.$path)){
            $path = PWE::getThemePath().'/admin/'.$path;
        }
        return $path;
    }
    private function _getMainPath(){
        $path = 'include/interface/main.php';
        if(file_exists(PWE::getThemePath().'/admin/'.$path)){
            $path = PWE::getThemePath().'/admin/'.$path;
        }
        return $path;
    }
    private function _getFooterPath(){
        $path = 'include/interface/footer.php';
        if(file_exists(PWE::getThemePath().'/admin/'.$path)){
            $path = PWE::getThemePath().'/admin/'.$path;
        }
        return $path;
    }
}
?>
